package org.copyfelix.io;

import java.util.Map;

public interface CopycatStream {
	
	public static final int INPUTSTREAM_OPTIONS = 200;
	/**
	 * Valore restituito se la copia è andata a buon fine
	 */
	public static final int STREAM_OK = 0;
	
	/**
	 * Valore restituito se si è verificato qualche errore che però non è andato ad impattare sulla corretta esecuzione della copia
	 */
	public static final int STREAM_WARNING = 1;
	
	/**
	 * Valore restituito se si sono verificati errori nella copia. Il Processo di copia in questo caso viene interrotta dal sistema.
	 */
	public static final int STREAM_ERROR = 2;
	/**
	 * Metodo per la lettura del dato dal sorgente e la scrittura in real time sul punto di arrivo
	 * @param target punto destinatario della scrittura.
	 * @return
	 * @throws Exception
	 */
	public int read(CopycatStream target) throws Exception;
	
	
	/**
	 * Metodo per la scrittura dei dati in ingresso.
	 * @return
	 * @throws Exception
	 */
	public int write() throws Exception;
	
	
	/**
	 * Imposta la mappa con le info necessarie alla copia
	 * @param options
	 */
	public void streamOptions(Map<Integer,Object> options) ;

}
